package pac

import (
	"encoding/json"
	"fmt"
	"net"
	"slgw_web/serial/util"
)

func LouKouTCPConnect() {

	listen, err := net.Listen("tcp", "192.168.0.110:6688")
	if err != nil {
		util.Error("楼口监听失败:" + err.Error())
		return
	}

	for {
		conn, err2 := listen.Accept()
		if err2 != nil { //客户端的等待失败
			util.Error("客户端的等待失败:" + err2.Error())
		} else {
			//连接成功：
			fmt.Printf("楼口等待链接成功，con=%v ，接收到的客户端信息：%v \n", conn, conn.RemoteAddr().String())
		}
		go tcp_server_process(conn)
	}
}
func tcp_server_process(conn net.Conn) {
	defer conn.Close()

	for {
		read_buf := make([]byte, 2048)
		n, err := conn.Read(read_buf)
		if err != nil {
			return
		}
		//反序列化
		err = json.Unmarshal(read_buf[:n], &util.Types)
		if err != nil {
			util.Error("楼口数据json unmarshal error:" + err.Error())
		} else if util.Types.Type == 1 { //楼口数据
			err = json.Unmarshal(read_buf[:n], &util.LoukouData)
			if err != nil {
				util.Error("楼口数据json unmarshal error:" + err.Error())
			} else {
				util.WriteMessage(util.LoukouData, "3")
			}
		} else if util.Types.Type == 2 { //硬件测试
			err = json.Unmarshal(read_buf[:n], &util.Hards)
			if err != nil {
				util.Error("楼口数据json unmarshal error:" + err.Error())
			} else {
				util.WriteMessage(util.Hards, "4")
			
			}
		}

	}
}
